import axios from 'axios'
import { ElMessage } from 'element-plus'
// 引入用户仓库
import { useUserStore } from '@/store/modules/user';

// 创建axios实例
const request = axios.create({
  // 基础路径
  baseURL: import.meta.env.VITE_APP_BASE_API, //基础路径上会携带 /api
  timeout: 5000
})


// 请求拦截器
request.interceptors.request.use((config) => {
  // console.log('请求拦截器 config', config)
  const userStore = useUserStore()
  if(userStore.token) {
    config.headers.token = userStore.token
  }
  // 返回配置对象 不然请求发布出去
  return config
})


// 响应拦截器 成功返回 和失败返回
request.interceptors.response.use((response) => {
  // 成功回调
  // console.log('响应拦截器 response', response)
  // 简化数据
  return response.data
}, (error) => {
  // 失败回调: 处理http网络错误
  // 定义一个变量存储错误网络信息
  // console.log('响应拦截器 error', error)
  let message = ''
  // https状态码
  let status = error.request.status

  switch(status) {
    case 401: 
      message = 'token过期'
      break;
    case 403:
      message = '无权访问'
      break;
    case 404:
      message = '404,日志错误'
      break;
    case 500:
      message = '服务器报错'
      break;
    default:
      message = '网络出错'
      break;
  }

  // 提示错误信息
  ElMessage({
    type: 'error',
    message
  })
  // 返回失败promise终结promise链
  return Promise.reject(error)

})

export default request


